package com.qzsoft.zhjd.asphalt.modules.asphalthomepage.service;

import cn.hutool.json.JSONObject;
import com.qzsoft.system.modules.sysstation.entity.SysStationEntity;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.ProductionDataBaseDTO;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.AsphaltDataWeightDTO;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.AsphaltMonthAndYearCountDto;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.AsphaltMonthCountDto;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.GetCostAdjustmentDTO;
import com.qzsoft.zhjd.asphalt.modules.asphalthomepage.dto.OmitDepthOutputAtEachBaseDTO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface HomePageService {

    /**
     * @Title countByYear
     * @Description 获取养护基地指定年份产量统计
     * @param baseCode 养护基地主键
     * @param year     统计年份
     * @return 产量统计
     */
    BigDecimal countByYear(String baseCode, String year);

    /**
     * @Title countForMonth
     * @Description 养护基地指定年份月产量统计
     * @param baseCode 养护基地编码
     * @param year     统计年份
     * @return 月产量统计
     */
    List<AsphaltMonthCountDto> countForMonth(String baseCode, String year);

    /**
     * 产量统计
     *
     * @return
     */
    OmitDepthOutputAtEachBaseDTO omitDepthOutputAtEachBase(Map<String, Object> params);

    /**
     * 材料成本核算
     *
     * @param params
     * @return
     */
    List<GetCostAdjustmentDTO> getCostAdjustment(Map<String, Object> params);

    /**
     * 产量情况
     *
     * @param params
     * @return
     */
    List<JSONObject> plantProduction(Map<String, Object> params);

    /**
     * 项目供应情况
     *
     * @param params
     * @return
     */
    List<JSONObject> estimatedTimeOfDelivery(Map<String, Object> params);

    /**
     * 实时生产情况
     *
     * @param params
     * @return
     */
    List<AsphaltDataWeightDTO> realTimeProduction(Map<String, Object> params);

    /**
     * 查看
     *
     * @param id
     * @return
     */
    ProductionDataBaseDTO details(String id);

    /**
     * 根据基地获取拌合楼
     *
     * @param params
     * @return
     */
    List<SysStationEntity> getTokenStart(Map<String, Object> params);


    /**
     * @Title getCountByMonthAndYear
     * @Description 获取指定月份、年度产量
     * @param baseCode 基地编号
     * @param month 月份
     * @param year  年份
     * @return 指定月份、年度产量
     */
    AsphaltMonthAndYearCountDto getCountByMonthAndYear(String baseCode, String month, String year);
}
